package org.ponly.cta4j;

import java.awt.image.BufferedImage;

/**
 * 验证码.
 *
 * @author vacoor
 * @since 1.0
 */
public interface Captcha {

    /**
     * @return Challenge
     */
    BufferedImage getChallenge();

    /**
     * 验证响应信息.
     *
     * @param response 用户反馈的响应
     * @return 响应是否正确
     */
    boolean validate(Object response);

    /**
     * 销毁 Challenge.
     */
    void disposeChallenge();

    /**
     * @return {@link #getChallenge()} 是否被调用过
     */
    boolean hasChallengeBeenCalled();

    /**
     * 获取验证码的生效时间, 生效时间为第一次调用 {@link #getChallenge()} 的时间, 如果没有生效, 则返回负数.
     *
     * @return 如果没有生效, 则返回负数, 否则返回验证码生效时间 (距离1970.01.01 00:00:00)
     */
    long getEffectiveTime();

}
